# @Author   : 懒羊羊
# @File     : homeWk_24_11_26.py
# @Time     : 2024/11/26 17:44
import copy
import keyword
import random

# 1、
# list0 = [1, 34, "hello", "abc", "ac"]
# list1 = [11, 2, 13, 41, 5, 61, 7, 18, 9, 10]
#
# # 1.追加list0：元组：(1,2,3)
# list0.append((1, 2, 3))
# print(list0)
# # 2.在list1在第三个元素前插入，数字：11
# list1.insert(2, 11)
# print(list1)
# # 3.list0找到abc下标 ，并修改成80
# a = list0.index("abc")
# list0[a] = 80
# print(list0)
# # 4.list0在删除第4个元素
# list0.pop(3)
# print(list0)
# # 5.打印出list1的类型、长度
# print(f"list1的类型：{type(list1)}，长度：{len(list1)}")
# # 7.每隔2个打印出list1中的元素
# print(list1[::2])
# # 8.取出list1中最后一个元素，并打印
# b = list1[-1]
# print(b)
# # 9.修改list1中第4个元素为：100
# list1[3] = 100
# print(list1)
# # 12.定义一个空list2
# list2 = []
# print(list2)
#
# 2、
# a = 5
# b = 10
# 分别使用 +=, -=, *=, /=,  //=, %= 对b赋值，并打印出赋值后的结果
# b += 5
# print(b)
#
# b -= 6
# print(b)

# b *= 3
# print(b)

# b /= 2
# print(b)

# b //= 2
# print(b)

# b %= 3
# print(b)

# 4、
# 打印出python中的所有关键字，并赋值给变量 kw，同时指定kw的类型为：list
# 获取并打印出kw的长度及类型

# kw = list(keyword.kwlist)
# print(f"kw的长度：{len(kw)}, kw的类型：{type(kw)}")

# 5、
# 元组
# tup1 = (12, 23, 45)
# tup2 = ("ab", )
# # 1.将元组tup1，与tup2组合在一起，并打印出来
# tup3 = tup1 + tup2
# print(tup3)
# # 2.将元组tup2 复制3次并打印
# tup4 = tup2 * 3
# print(tup4)
# # 3.求元组tup1的长度并打印
# print(f"tup1的长度：{len(tup1)}")
# # 4.删除元组tup2，并打印
# del tup2
# print(tup2)

# 5.定义一个空元组，tup3
# tup3 = ()
# print(tup3)

# 6、
# 列表
# list1 = [89, 30, 45, 67, 90, 23, 78, 23]
# 1.将list1反向，并打印出来
# list2 = list1[::-1]
# print(list2)
# 2.给list1排序，从小到大并打印
# list1.sort()
# print(list1)
# 3.给list1排序，从大到小并打印
# list1.sort(reverse=True)
# print(list1)
# 4.计算出23的个数并打印
# num = list1.count(23)
# print(f"23的个数：{num}")
# 5.删除第5个元素，并打印
# list1.pop(4)
# print(list1)
#
# 7、
# 字典
# dict1 = {"name": "zhangsan"}
# # 1.增加元素：key=address，value="河南郑州"
# dict2 = {"address": "河南郑州"}
# dict1.update(dict2)
# print(dict1)
# # 2.获取所有的item并打印
# print(dict1.items())
# # 3.获取所有的key并打印
# print(dict1.keys())
# # 4.获取address的值并打印（分别用两种形式完成：若键不存在时不能报错，键不存在时报错）
# a = dict1.get("address")
# print(a)
# b = dict1["address"]
# print(b)
# # 6.修改键“name”的值为：“lisi”
# dict1["name"] = "lisi"
# print(dict1)
# # 7.分别查看字典dict1的长度及类型，并打印
# print(f"dict1的长度是：{len(dict1)}, 类型是：{type(dict1)}")
# # 8.清空字典dict1，并打印
# dict1.clear()
# print(dict1)

# 9.定义一个空字典，dict2
# dict2 = {}
# print(dict2)
#
# 8、将元组（90,30,99,89,50,70,60,60,40,50,60）去重并从小到大排序。
# tuple1 = (90, 30, 99, 89, 50, 70, 60, 60, 40, 50, 60)
# set1 = set(tuple1)
# list1 = list(set1)
# list1.sort(reverse=False)
# tuple1 = list1
# print(tuple1)
#
#
# 10、
# 通过键盘获取两个数值，然后对其进行判断：
# 若两个数均不在[0,100]之间，则不满足运算条件，不做运算；
# 若均在[0,100]之间，满足运算条件，且分别做以下运算：
# 若两数均在[80,100]之间，做加法运算
# 若两数均在[50,79]之间，做减法运算
# 若两数均在[20,49]之间，做乘法运算
# 若两数均在[0,19]之间且第二个数不为0，做除法运算
# 若第二个数为0，则不能运算
# 其他范围的数据，则不在运算区间，不做任何运算。

# num1 = int(input("请输入第一个数字："))
# num2 = int(input("请输入第一个数字："))
# if (num1 < 0 or num1 > 100) and (num2 < 0 or num2 > 100):
#     print("不满足运算条件，不做运算！！！")
# else:
#     if 80 <= num1 <= 100 and 80 <= num2 <= 100:
#         jia = num1 + num2
#         print(jia)
#     elif 50 <= num1 <= 79 and 50 <= num2 <= 79:
#         jian = num1 - num2
#         print(jian)
#     elif 20 <= num1 <= 49 and 20 <= num2 <= 49:
#         cheng = num1 * num2
#         print(cheng)
#     elif 0 <= num1 <= 19 and 0 < num2 <= 19:
#         chu = num1 / num2
#         print(chu)
#     elif num2 == 0:
#         print("第二个数不能是0！！！")
#     else:
#         print("不在运算期间，不做任何运算")


# 11、
# 猜拳游戏，用户输入剪刀(0)  石头(1)  布(2)，与电脑程序随机生成一个数字范围在(0,2),来判断是获胜、平局，还是输了。
# 注：随机数使用代码：rm=random.randint(0,2)

# choices = ["剪刀", "石头", "布"]
# print("欢迎来到猜拳游戏！！！")
# print("剪刀(0)  石头(1)  布(2)")
# a = random.randint(0, 2)
# b = int(input("请输入你的选择："))
# user_choices = choices[b]
# computer_choices = choices[a]
# print(f"你选择了{user_choices}")
# print(f"电脑选择了{computer_choices}")
# if a == b:
#     print("平局！！！")
# elif (a == 0 and b == 1) or (a == 1 and b == 2) or (a == 2 and b == 0):
#     print("你赢了！！！")
# else:
#     print("你输了！！！")


#
# 15.
# for循环遍历列表，不为空则输出列表中内容，为空则输出为空的提示信息。
# while循环，满足条件时输出内容，不满足时输出跳出循环的提示。

# mylist = ["懒羊羊", 22, "abc", True]
# mylist = []
#
# if mylist:
#     for i in mylist:
#         print(i)
# else:
#     print("列表内容为空！！！")
# while mylist:
#     print(mylist)
#     break
# else:
#     print("列表为空！！！")

#
# 13、
# score = [90, 30, 99, 89, 50, 70, 60, 60, 40, 50, 60]
# 1.给成绩排序，从高到低，并打印出新成绩列表
# score.sort(reverse=True)
# print(score)
# 2.统计成绩中60的个数（for循环）
# count = 0
# for i in score:
#     if i == 60:
#         count += 1
#
# print(count)

#
# 14、
# 将500以内，5的倍数生成新列表，并打印出新列表中所有元素之和，
# 同时打印出共几个元素。
# mylist = list(range(0, 500, 5))
# sum1 = 0
# count = 0
# for i in mylist:
#     sum1 += i
#     count += 1
#
# print(f"所有元素之和是：{sum1}，总共{count}个元素")


l = [1, 2, 3, [4, 5, 6]]
l2 = copy.copy(l)
l3 = copy.deepcopy(l)
print(id(l))
print(id(l2))
print(id(l[3]))
print(id(l2[3]))
print(id(l3))
print(id(l3[3]))
